/**
 * Fichier TacheAdministrative.java : Définition de classe
 * fr.unice.gnpt.core.TacheAdministrative : Service de type tâche administrative
 * 
 * Auteurs : Groupe GNPT : Gastinel, Nicolas, Pellegrino, Trovato
 */
package fr.unice.gnpt.core;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

/**
 * Classe gérant un service de type tâche administrative.
 * <p>
 * Une tâche administrative pourrait consister par exemple à la coordination du
 * département ou la gestion des stages organisés par le département.
 * 
 * @author gnpt
 * @version 0.0.1
 */
@Entity
@DiscriminatorValue("TA")
public class TacheAdministrative extends Service {
	/**
	 * Constructeur par défaut.
	 * 
	 * @param enseignant
	 *            l'enseignant associé à la tâche administrative.
	 */
	public TacheAdministrative(Enseignant enseignant) {
		super(enseignant);
	}

	/**
	 * Constructeur.
	 */
	public TacheAdministrative() {
		super();
	}

	/**
	 * @param enseignant 
	 *            l'enseignant associé à la tâche administrative.
	 * @param desc
	 *          La Description de la tâche administrative
	 * @param hetd
	 *          Le nombre d'heure équivalent td de la tâche administrative
	 */
	
	public TacheAdministrative(Enseignant enseignant, String desc, Integer hetd) {
		super(enseignant);
		this.description = desc;
		this.setNbHeuresEquivalent(hetd);
	}

	/**
	 * Description de la tâche administrative.
	 */
	private String description;

	/**
	 * Accesseur pour la description associé au service.
	 * 
	 * @return la description associé au service.
	 */
	public String getDescription() {
		return this.description;
	}

	/**
	 * Mutateur pour la description associée au service.
	 * 
	 * @param description
	 *            la nouvelle description associée au service.
	 */
	public void setDescription(String description) {
		this.description = description;
	}

	/**
	 * @see fr.unice.gnpt.core.Service#toString()
	 */
	@Override
	public String toString() {
		return super.toString() + ", fonction : " + this.description;
	}

	/**
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (obj instanceof TacheAdministrative) {
			TacheAdministrative ta = (TacheAdministrative) obj;
			return ((ta.getEnseignant().equals(ta.getEnseignant()))
					&& (ta.getDescription().equalsIgnoreCase(ta.getDescription())));
		}
		return false;
	}
}
